package com.cjm.algorithm.tree;

import com.cjm.algorithm.TreeNode;

import java.util.ArrayList;
import java.util.List;

public class Ti230 {
    public static void main(String[] args) {
        Ti230 ti230 = new Ti230();
        System.err.println(ti230.kthSmallest(TreeNode.generatorTreeNode(new Integer[]{3, 1, 4, null, 2}), 1));
        System.err.println(ti230.kthSmallest(TreeNode.generatorTreeNode(new Integer[]{5,3,6,2,4,null,null,1}), 3));
    }
    List<Integer> res = new ArrayList<>();
    int hello = 0;
    public int kthSmallest(TreeNode root, int k) {
        // 第一小， 最小
        // 第二小， 倒数第二
        // 也就是从小到大排序， 第k个元素呗
        // 然后这个是一个二叉树
        // 左中右，所以采取中序遍历
        res.clear();
        hello = k;
        method230(root);
        return res.get(k - 1);
    }

    private void method230(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left != null) {
            method230(root.left);
        }
        res.add(root.val);
        if (root.right != null) {
            method230(root.right);
        }
    }
}
